/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package redinftel.formularios;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
import redinftel.entidades.Mensaje;
import redinftel.entidades.Usuario;
import redinftel.sesiones.MensajeFacadeRemote;
import redinftel.sesiones.UsuarioFacadeRemote;

/**
 *  Clase mensaje que controla toda la mensajeria
 * Controla los mensajes de entrada y salida
 * borra mensajes ,responder mensajes y decir los mensajes que queda por leer
 * @author Six Degrees Team
 */
@ManagedBean
@RequestScoped
public class MensajeBean {

    @EJB
    private UsuarioFacadeRemote usuarioFacade;
    @EJB
    private MensajeFacadeRemote mensajeFacade;
    private Usuario usuario;
    private List<Mensaje> entrada;
    private int numeroEntrada;
    private List<Mensaje> salida;
    private int numeroSalida;
    private String respuesta;
    private String asunto;
    private String mensaje;
    private String destinatario;

    /**
     *
     * @return numero entrada
     */
    public int getNumeroEntrada() {
        this.getUsuario();
        entrada = mensajeFacade.obtenerEntrada(usuario.getIdUsuario());
        numeroEntrada = entrada.size();
        return numeroEntrada;
    }

    public void setNumeroEntrada(int numeroEntrada) {
        this.numeroEntrada = numeroEntrada;
    }
/**
 *
 * @return numero salida
 */
    public int getNumeroSalida() {
        this.getUsuario();
        salida = mensajeFacade.obtenerSalida(usuario.getIdUsuario());
        numeroSalida = salida.size();
        return numeroSalida;
    }

    public void setNumeroSalida(int numeroSalida) {
        this.numeroSalida = numeroSalida;
    }
/**
 *
 * @return destinatorio
 */
    public String getDestinatario() {
        return destinatario;
    }

    public void setDestinatario(String destinatario) {
        this.destinatario = destinatario;
    }

    public String getMensaje() {
        return mensaje;
    }

    public void setMensaje(String mensaje) {
        this.mensaje = mensaje;
    }
/*
 * devuelve al asunto
 */
    public String getAsunto() {
        return asunto;
    }

    public void setAsunto(String asunto) {
        this.asunto = asunto;
    }
/**
 *
 * @return respuesta del mensaje
 */
    public String getRespuesta() {
        return respuesta;
    }

    public void setRespuesta(String respuesta) {
        this.respuesta = respuesta;
    }
/**
 *
 * @return usuario
 */
    public Usuario getUsuario() {
        FacesContext fctx = FacesContext.getCurrentInstance();
        HttpSession session = (HttpSession) fctx.getExternalContext().getSession(false);
        usuario = (Usuario) session.getAttribute("usuario");
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public List<Mensaje> getEntrada() {
        return entrada;
    }

    public void setEntrada(List<Mensaje> entrada) {
        this.entrada = entrada;
    }

    public List<Mensaje> getSalida() {
        return salida;
    }

    public void setSalida(List<Mensaje> salida) {
        this.salida = salida;
    }

    /** Creates a new instance of MensajeBean */
    public MensajeBean() {
        ChangeLocaleBean.cambiar();
        if (ChangeLocaleBean.getIdioma().equals("es")) {
            mensaje = "";
            asunto = "Asunto del mensaje...";
            respuesta = "Texto del mensaje...";
            destinatario = "Destinatario...";
        } else {
            mensaje = "";
            asunto = "Subject message...";
            respuesta = "Text message...";
            destinatario = "Recipient...";
        }
    }
/**
 *
 * @return no redirige a ninguna pagina
 *
 */
    public String doResponder() {
        ChangeLocaleBean.cambiar();
        if (asunto.equals("")) {
            if (ChangeLocaleBean.getIdioma().equals("es")) {
                mensaje = "El asunto esta vacio";
                asunto = "Asunto del mensaje...";
            } else {
                mensaje = "The subject is empty...";
                asunto = "Subject message";
            }
        } else if (asunto.length() > 30) {
            if (ChangeLocaleBean.getIdioma().equals("es")) {
                mensaje = "El asunto no puede tener mas de 30 caracteres";
                asunto = "Asunto del mensaje...";
            } else {
                mensaje = "The subject cant have more than 30 characters";
                asunto = "Subject message...";
            }
        } else if (respuesta.equals("")) {
            if (ChangeLocaleBean.getIdioma().equals("es")) {
                mensaje = "El mensaje esta vacio ";
                respuesta = "Texto del mensaje...";
            } else {
                mensaje = "The message is empty";
                respuesta = "Text message...";
            }
        } else if (respuesta.length() > 200) {
            if (ChangeLocaleBean.getIdioma().equals("es")) {
                mensaje = "El mensaje no puede tener mas de 200 caracteres";
                respuesta = "Texto del mensaje...";
            } else {
                mensaje = "The message cant have more than 200 charecters";
                respuesta = "Text message...";
            }
        } else {
            FacesContext con = FacesContext.getCurrentInstance();
            String idDestinatario = con.getExternalContext().getRequestParameterMap().get("destinatario");
            Date fecha = new Date();
            Usuario dest = usuarioFacade.find(new BigDecimal(idDestinatario));
            Integer PK = Integer.parseInt(mensajeFacade.obtenerPK().toString()) + 1;
            mensajeFacade.obtenerPK();

            Mensaje m = new Mensaje();
            m.setEstado("PORLEER");
            m.setIdEmisor(this.getUsuario());
            m.setTexto(respuesta);
            m.setAsunto(asunto);
            m.setIdMensaje(new BigDecimal(PK));
            m.setFecha(fecha);
            m.setIdReceptor(dest);

            mensajeFacade.create(m);
            if (ChangeLocaleBean.getIdioma().equals("es")) {
                mensaje = "Mensaje enviado con exito";
                asunto = "Asunto del mensaje...";
                respuesta = "Texto del mensaje...";
            } else {
                mensaje = "Message sent successfully";
                respuesta = "Text message...";
                asunto = "Subject message...";
            }
        }
        return null;
    }
/**
 *
 * @return no redirige a ninga pagina
 * lo que hace es borrar segun el id del mensaje
 */
    public String doBorrar() {
        ChangeLocaleBean.cambiar();
        FacesContext con = FacesContext.getCurrentInstance();
        String idMensaje = con.getExternalContext().getRequestParameterMap().get("idmensaje");
        mensajeFacade.remove(mensajeFacade.find(new BigDecimal(idMensaje)));
        if (ChangeLocaleBean.getIdioma().equals("es")) {
            mensaje = "Mensaje borrado con exito";
            asunto = "Asunto del mensaje...";
            respuesta = "Texto del mensaje...";
        } else {
            mensaje = "Message deleted successfully";
            respuesta = "Text message...";
            asunto = "Subject message...";
        }
        return null;
    }
/**
 *
 * @return no me redirige a ninguna pagina
 * compruena que se ha introducido todos los datos
 * y envia el mensaje con la fecha asunto y datos necesarios
 */
    public String doEnviar() {
        ChangeLocaleBean.cambiar();
        if (asunto.equals("")) {
            if (ChangeLocaleBean.getIdioma().equals("es")) {
                mensaje = "El asunto esta vacio";
                destinatario = "Destinatario...";
            } else {
                mensaje = "The subject is empty";
                destinatario = "Recipient...";
            }
        } else if (asunto.length() > 30) {
            if (ChangeLocaleBean.getIdioma().equals("es")) {
                mensaje = "El asunto no puede tener mas de 30 caracteres";
                destinatario = "Destinatario...";
            } else {
                mensaje = "The subject cant have more than 30 characters";
                destinatario = "Recipient...";
            }
        } else if (respuesta.equals("")) {
            if (ChangeLocaleBean.getIdioma().equals("es")) {
                mensaje = "El mensaje esta vacio";
                destinatario = "Destinatario...";
            } else {
                mensaje = "The message is empty";
                destinatario = "Recipient...";
            }
        } else if (respuesta.length() > 200) {
            if (ChangeLocaleBean.getIdioma().equals("es")) {
                mensaje = "El mensaje no puede tener mas de 200 caracteres";
                destinatario = "Destinatario...";
            } else {
                mensaje = "The message cant have more than 200 characteres";
                destinatario = "Recipient...";
            }
        } else {
            FacesContext con = FacesContext.getCurrentInstance();
            String idDestinatario = con.getExternalContext().getRequestParameterMap().get("destinatarioOculto");

            if (idDestinatario.equals("")  || idDestinatario == null) {
                if (ChangeLocaleBean.getIdioma().equals("es")) {
                    mensaje = "Seleccione el destinatario mediante las sugerencias";
                    destinatario = "Destinatario...";
                } else {
                    mensaje = "Select the recipient by the suggestions";
                    destinatario = "Recipient...";
                }
            } else {
                Date fecha = new Date();
                Integer PK = Integer.parseInt(mensajeFacade.obtenerPK().toString()) + 1;
                Usuario u = usuarioFacade.find(new BigDecimal(idDestinatario));
                if (u == null) {
                    if (ChangeLocaleBean.getIdioma().equals("es")) {
                        mensaje = "Seleccione el destinatario mediante las sugerencias";
                        destinatario = "Destinatario...";
                    } else {
                        mensaje = "Select the recipient by the suggestions";
                        destinatario = "Recipient...";
                    }
                } else {
                    Mensaje m = new Mensaje();
                    m.setEstado("PORLEER");
                    m.setIdEmisor(this.getUsuario());
                    m.setTexto(respuesta);
                    m.setAsunto(asunto);
                    m.setIdMensaje(new BigDecimal(PK));
                    m.setFecha(fecha);
                    m.setIdReceptor(u);
                    mensajeFacade.create(m);
                    if (ChangeLocaleBean.getIdioma().equals("es")) {
                        mensaje = "Mensaje enviado con exito";
                        asunto = "Asunto del mensaje...";
                        respuesta = "Texto del mensaje...";
                    } else {
                        mensaje = "Message sent successfully";
                        asunto = "Subject message...";
                        respuesta = "Text message...";
                    }
                }
            }
        }
        return null;
    }
}
